package com.wicket.okrframework.integration.dto;

import com.wicket.okrframework.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Objects;
import lombok.Data;

@Data
public class OrgInductionRecordDto extends BaseDto implements Serializable {

  /**
   * 就职记录ID:
   */
  @ApiModelProperty("就职记录ID")
  private String inductionRecordId;

  /**
   * 身份人员ID:
   */
  @ApiModelProperty("身份人员ID")
  private String originalRoleMemberId;

  /**
   * 个人账号ID:
   */
  @ApiModelProperty("个人账号ID")
  private String userId;

  /**
   * 真实头像:
   */
  @ApiModelProperty("真实头像")
  private String userFace;

  /**
   * 真实姓名:
   */
  @ApiModelProperty("真实姓名")
  private String idCardName;

  /**
   * 用户昵称:
   */
  @ApiModelProperty("用户昵称")
  private String nickName;

  /**
   * 身份人员编号:
   */
  @ApiModelProperty("身份人员编号")
  private String roleMemberCode;

  /**
   * 必选冗余职务名称:
   */
  @ApiModelProperty("必选冗余职务名称")
  private String positionIdName;

  /**
   * 是否兼职:
   */
  @ApiModelProperty("是否兼职")
  private String isPtJob;

  /**
   * 组织ID:
   */
  @ApiModelProperty("组织ID")
  private String organizationId;

  /**
   * 冗余组织名称:
   */
  @ApiModelProperty("冗余组织名称")
  private String organizationName;

  /**
   * 就职单位对象实例ID:
   */
  @ApiModelProperty("就职单位对象实例ID")
  private String entityId;

  /**
   * 冗余部门名称:
   */
  @ApiModelProperty("冗余部门名称")
  private String deptShortName;

  /**
   * 就职单位类型实例:
   */
  @ApiModelProperty("就职单位类型实例")
  private String inductionUnitTypeCode;

  /**
   * 部门标识:
   */
  @ApiModelProperty("部门标识")
  private String deptCode;

  /**
   * 层级:
   */
  @ApiModelProperty("层级")
  private Long levelNumber;

  /**
   * 是否主岗:
   */
  @ApiModelProperty("是否主岗")
  private String isMainInduction;

  /**
   * 职务性质:
   */
  @ApiModelProperty("职务性质")
  private String positionType;

  /**
   * 编制ID:
   */
  @ApiModelProperty("编制ID")
  private String staffingId;

  /**
   * 冗余职务名称ID:
   */
  @ApiModelProperty("冗余职务名称ID")
  private String positionIdNameId;

  /**
   * 个人职务排序:
   */
  @ApiModelProperty("个人职务排序")
  private Long positionOrderNumber;

  /**
   * 冗余可选职务ID:
   */
  @ApiModelProperty("冗余可选职务ID")
  private String positionId;

  /**
   * 冗余部门职务关系ID:
   */
  @ApiModelProperty("冗余部门职务关系ID")
  private String deptPositionRelationshipId;

  /**
   * 冗余可选职务级别ID:
   */
  @ApiModelProperty("冗余可选职务级别ID")
  private String positionGradeId;

  /**
   * 冗余职务级别名称:
   */
  @ApiModelProperty("冗余职务级别名称")
  private String positionGradeName;

  /**
   * 冗余职务类别字典ID:
   */
  @ApiModelProperty("冗余职务类别字典ID")
  private String typeDictionaryId;

  /**
   * 冗余职务字典名称:
   */
  @ApiModelProperty("冗余职务字典名称")
  private String typeDictionaryName;

  /**
   * 冗余可选岗位ID:
   */
  @ApiModelProperty("冗余可选岗位ID")
  private String stationId;

  /**
   * 冗余可选职位ID:
   */
  @ApiModelProperty("冗余可选职位ID")
  private String postId;

  /**
   * 冗余岗位名称:
   */
  @ApiModelProperty("冗余岗位名称")
  private String stationName;

  /**
   * 冗余职位名称:
   */
  @ApiModelProperty("冗余职位名称")
  private String postName;

  /**
   * 冗余可选岗位类型ID:
   */
  @ApiModelProperty("冗余可选岗位类型ID")
  private String stationTypeId;

  /**
   * 冗余岗位类型名称:
   */
  @ApiModelProperty("冗余岗位类型名称")
  private String stationTypeName;

  /**
   * 冗余可选岗位等级ID:
   */
  @ApiModelProperty("冗余可选岗位等级ID")
  private String stationGradeId;

  /**
   * 冗余岗位等级名称（融合别名）:
   */
  @ApiModelProperty("冗余岗位等级名称（融合别名）")
  private String stationGradeName;

  /**
   * 可选主管就职记录ID:
   */
  @ApiModelProperty("可选主管就职记录ID")
  private String directorInductionRecordId;

  /**
   * 冗余职务角色编码:
   */
  @ApiModelProperty("冗余职务角色编码")
  private String positionRoleCode;

  /**
   * 个人资料记录ID:
   */
  @ApiModelProperty("个人资料记录ID")
  private String personalDataId;

  /**
   * 角色标识:
   */
  @ApiModelProperty("关联角色编码")
  private String roleCode;

  /**
   * 备注首位字母:
   */
  @ApiModelProperty("备注首位字母")
  private String firstLetter;

  /**
   * 部门成员排序:
   */
  @ApiModelProperty("部门成员排序")
  private Long deptMemberOrderNumber;

  /**
   * 批次下更新状态:
   */
  @ApiModelProperty("批次下更新状态")
  private String updateStatus;

  /**
   * 是否异动:
   */
  @ApiModelProperty("是否异动")
  private String isTransaction;

  /**
   * 排序
   */
  @ApiModelProperty("排序")
  private Long orderNumber;

  /**
   * 是否主管 TRUE:是 FALSE:否
   */
  @ApiModelProperty("是否主管")
  private String isDirector;

  /**
   * 部门业务身份 EDUCATIONAL_ADMINISTRATION:教务 TEACHING_DEPARTMENT:教学部门 LEARNING_INDUSTRIAL_PRODUCTION:学工 PERSONNEL_MATTERS:人事 FINANCE:财务 SCHOOL_LEADER:校领导
   */
  @ApiModelProperty("部门业务身份")
  private String deptBusinessIdentity;

  /**
   * 冗余一级部门ID
   */
  @ApiModelProperty("冗余一级部门ID")
  private String primaryDeptId;

  @Override
  public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    if (!super.equals(o)) return false;
    OrgInductionRecordDto that = (OrgInductionRecordDto) o;
    return (
      inductionRecordId == that.inductionRecordId &&
      originalRoleMemberId == that.originalRoleMemberId &&
      userId == that.userId &&
      userFace == that.userFace &&
      idCardName == that.idCardName &&
      nickName == that.nickName &&
      roleMemberCode == that.roleMemberCode &&
      positionIdName == that.positionIdName &&
      isPtJob == that.isPtJob &&
      organizationId == that.organizationId &&
      organizationName == that.organizationName &&
      entityId == that.entityId &&
      deptShortName == that.deptShortName &&
      inductionUnitTypeCode == that.inductionUnitTypeCode &&
      deptCode == that.deptCode &&
      levelNumber == that.levelNumber &&
      isMainInduction == that.isMainInduction &&
      positionType == that.positionType &&
      staffingId == that.staffingId &&
      positionIdNameId == that.positionIdNameId &&
      positionOrderNumber == that.positionOrderNumber &&
      positionId == that.positionId &&
      deptPositionRelationshipId == that.deptPositionRelationshipId &&
      positionGradeId == that.positionGradeId &&
      positionGradeName == that.positionGradeName &&
      typeDictionaryId == that.typeDictionaryId &&
      typeDictionaryName == that.typeDictionaryName &&
      stationId == that.stationId &&
      postId == that.postId &&
      stationName == that.stationName &&
      postName == that.postName &&
      stationTypeId == that.stationTypeId &&
      stationTypeName == that.stationTypeName &&
      stationGradeId == that.stationGradeId &&
      stationGradeName == that.stationGradeName &&
      directorInductionRecordId == that.directorInductionRecordId &&
      positionRoleCode == that.positionRoleCode &&
      personalDataId == that.personalDataId &&
      roleCode == that.roleCode &&
      firstLetter == that.firstLetter &&
      deptMemberOrderNumber == that.deptMemberOrderNumber &&
      updateStatus == that.updateStatus &&
      isTransaction == that.isTransaction &&
      orderNumber == that.orderNumber &&
      isDirector == that.isDirector &&
      deptBusinessIdentity == that.deptBusinessIdentity &&
      primaryDeptId == that.primaryDeptId
    );
  }

  @Override
  public int hashCode() {
    return Objects.hash(
      super.hashCode(),
      inductionRecordId,
      originalRoleMemberId,
      userId,
      userFace,
      idCardName,
      nickName,
      roleMemberCode,
      positionIdName,
      isPtJob,
      organizationId,
      organizationName,
      entityId,
      deptShortName,
      inductionUnitTypeCode,
      deptCode,
      levelNumber,
      isMainInduction,
      positionType,
      staffingId,
      positionIdNameId,
      positionOrderNumber,
      positionId,
      deptPositionRelationshipId,
      positionGradeId,
      positionGradeName,
      typeDictionaryId,
      typeDictionaryName,
      stationId,
      postId,
      stationName,
      postName,
      stationTypeId,
      stationTypeName,
      stationGradeId,
      stationGradeName,
      directorInductionRecordId,
      positionRoleCode,
      personalDataId,
      roleCode,
      firstLetter,
      deptMemberOrderNumber,
      updateStatus,
      isTransaction,
      orderNumber,
      isDirector,
      deptBusinessIdentity,
      primaryDeptId
    );
  }
}
